// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`decorator-type-assertion.ts 1`] = `
@(bind as ClassDecorator)
class Decorated {

}

@(<ClassDecorator>bind)
class Decorated {

}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@(bind as ClassDecorator)
class Decorated {}

@(<ClassDecorator>bind)
class Decorated {}

`;

exports[`decorators.js 1`] = `
export class TestTextFileService {
	constructor(
		@ILifecycleService lifecycleService,
	) {
	}
}

@commonEditorContribution
export class TabCompletionController {
}

@Component({
  selector: 'angular-component',
})
class AngularComponent {
  @Input() myInput: string;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export class TestTextFileService {
  constructor(@ILifecycleService lifecycleService) {}
}

@commonEditorContribution
export class TabCompletionController {}

@Component({
  selector: "angular-component"
})
class AngularComponent {
  @Input() myInput: string;
}

`;

exports[`decorators-comments.js 1`] = `

class Foo1 {
    @foo
    // comment
    async method() {}
}

class Foo2 {
    @foo
    // comment
    private method() {}
}

class Foo3 {
    @foo
    // comment
    *method() {}
}

class Foo4 {
    @foo
    // comment
    async *method() {}
}

class Something {
    @foo()
    // comment
    readonly property: Array<string>
}

class Something {
    @foo()
    // comment
    abstract property: Array<string>
}

class Something {
    @foo()
    // comment
    abstract method(): Array<string>
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Foo1 {
  @foo
  // comment
  async method() {}
}

class Foo2 {
  @foo
  // comment
  private method() {}
}

class Foo3 {
  @foo
  // comment
  *method() {}
}

class Foo4 {
  @foo
  // comment
  async *method() {}
}

class Something {
  @foo()
  // comment
  readonly property: Array<string>;
}

class Something {
  @foo()
  // comment
  abstract property: Array<string>;
}

class Something {
  @foo()
  // comment
  abstract method(): Array<string>;
}

`;

exports[`inline-decorators.ts 1`] = `

@d1
@d2(foo)
@d3.bar
@d4.baz()
class Class1 {}

class Class2 {
    @d1
    @d2(foo)
    @d3.bar
    @d4.baz()
    method1() {}

    @d1
    method2() {}

    @d2(foo)
    method3() {}

    @d3.bar
    method4() {}
}

class Class3 {
    @d1 fieldA;
    @d2(foo) fieldB;
    @d3.bar fieldC;
    @d4.baz() fieldD;

    constructor (
        @d1 private x: number,
        @d2(foo) private y: number,
        @d3('foo') private z: number,
        @d4({
            x: string
        }) private a: string,
    ) {}
}

@decorated class Foo {}

class Bar {
    @decorated method() {}
}

class MyContainerComponent {
  @ContentChildren(MyComponent) components: QueryListSomeBigName<MyComponentThat>;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@d1
@d2(foo)
@d3.bar
@d4.baz()
class Class1 {}

class Class2 {
  @d1
  @d2(foo)
  @d3.bar
  @d4.baz()
  method1() {}

  @d1
  method2() {}

  @d2(foo)
  method3() {}

  @d3.bar
  method4() {}
}

class Class3 {
  @d1 fieldA;
  @d2(foo) fieldB;
  @d3.bar fieldC;
  @d4.baz() fieldD;

  constructor(
    @d1 private x: number,
    @d2(foo) private y: number,
    @d3("foo") private z: number,
    @d4({
      x: string
    })
    private a: string
  ) {}
}

@decorated
class Foo {}

class Bar {
  @decorated
  method() {}
}

class MyContainerComponent {
  @ContentChildren(MyComponent)
  components: QueryListSomeBigName<MyComponentThat>;
}

`;
